package com.example.demo.algorithm;

import java.util.Arrays;

/**
 * 项目名称：hello-6
 * 类 名 称：ZhijiecharuSort
 * 类 描 述：直接插入排序 稳定算法，
 * Timsort
 * 直接插入排序的思路非常简单:依次将待排序的数据元素按其关键字值的大小插入前面的有序序列.
 * <p>
 * 细化来说:对于一个有n个元素的数据序列,排序需要进行n-1趟插入操作,如下所示:]
 * <p>
 * 第1趟插入:将第2个元素插入前面的有序子序列中,此时前面只有一个元素,当然是有序的.
 * <p>
 * 第2趟插入:将第3个元素插入前面的有序子序列中,前面两个元素是有序的.
 * <p>
 * ......
 * <p>
 * 第n-1趟插入:将第n个元素插入前面的有序子序列中,前面n-1个元素是有序的.
 * 创建时间：2020/11/4 21:43
 * 创 建 人：wangsheng25
 */
public class InsertSort {

    public static void main(String[] args) {
        int[] array = {10, 9, 8, 5, 3, 2, 0};
        //从第二个元素开始 排序次数
        for (int i = 1; i < array.length; i++) {
            //交换 从第i个开始倒序 跟前i个做比较
            for (int j = i; j > 0; j--) {
                int temp = 0;
                if (array[j] < array[j - 1]) {
                    temp = array[j - 1];
                    array[j - 1] = array[j];
                    array[j] = temp;
                }
                System.out.println("第-" + (i) + "-趟，第--" + (i - j + 1) + "--次" + Arrays.toString(array));
            }
            System.out.println("----------------------------------");
        }
        System.out.println(Arrays.toString(array));

    }
}
